Welcome to the earthquake analysis notebook. The data is derived from the USGS live feed of earthquakes in the past 30 days with a magnitude greater than 2.5+.

Goals:

– Find significant events based on depth, magnitude, and intensity.
– Focus on the tools used in earthquake analysis.
– Display outlying observations in a graphically asestetic way.

Data sources - https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php

https://earthquake.usgs.gov/earthquakes/feed/v1.0/csv.php

Documentation - https://earthquake.usgs.gov/data/comcat/index.php

Step 1 - Import and the GeoJson file and CSV, and convert them into a dataframe.
# create a spatial dataframe of the geojson file.
spdf <- geojson_read(here("data", "shakemap.geojson"), what="sp")
df <- as.data.frame(spdf)

# create dataframe from the CSV.
eq_csv <- read_csv(here("data", "2.5_month.csv"), show_col_types = FALSE)
Step 2 - Time for data wrangling. First off we need to parse out the year, month, and day from the datetime string in the ‘time’ column to get a simpler look at the data. We also want to create one more columns a named ‘magAll’ that will show us where magnitudes are greater than average over the last month.
# parse out time columns, create 'magAll', and drop uneccessary variables.
eq_new <- eq_csv %>%
  separate(time, c("year", "month", "day"), remove = FALSE) %>%
  mutate(magAll = mag > mean(mag, na.rm = TRUE)) %>%
  select(id, year, month, day, depth, magAll, depthError)
Step 3 - Join the tables together based on ‘id’ to get the attributes desired for the analysis.
# select, desired columns, rename certain variables, and sort by magnitude.
eq_df <- left_join(eq_new, df, by='id') %>%
  select(year, month, day, depth, depthError, magAll, mag, magType, place, felt, cdi, mmi, sig, net, title) %>%
  rename(intensity = mmi, intensityMax = cdi, magnitude = mag, significance = sig) %>%
  arrange(-magnitude)

select_all(eq_df)
Step 4 - Lets display a chart that represents depth vs magnitude, and compares the intensity felt by citizens reporting observations. We would expect to see a higher intensity values with increasing magnitude at shallower depths.
p <- eq_df %>%
  filter(intensity > 0) %>%
  ggplot(aes(x = depth, y = magnitude, color = intensity, size = magnitude)) +
  geom_jitter(alpha = 0.7) +
  scale_color_distiller(palette = "Spectral", direction = -1) +
  ggtitle("USGS Earthquakes (Magnitude VS Depth)")
  

ggplotly(p, width = 900, height = 600, tooltip = c("x", "y", "color"))
Step 5 - Magnitude types are the method or algorithm used to calculate the preferred magnitude for an event. A table describing the magnitude types can be found here https://www.usgs.gov/programs/earthquake-hazards/magnitude-types. Since the different methods are used for variations in earthquakes. Lets split the analysis into individual tables based on the algorithms and see which ones are preffered based on depth and magnitude.
# facet wrap -----------
p <- eq_df %>%
  filter(!is.na(magType)) %>%
  ggplot(aes(x = depth, y = magnitude, color = magnitude)) +
  geom_jitter(alpha = 0.7) +
  scale_color_distiller(palette = "Reds", direction = 1) +
  facet_wrap(~ magType) +
  ggtitle("USGS Earthquakes (Magnitude Type)")

ggplotly(p, width = 900, height = 600, tooltip = c("x", "y"))
Step 6 - Lets take a look and try to find the most significant earthquake that recieved the most attention by people and sensors in the last 30 days. Then export the plot as a .jpg file.
p <- eq_df %>%
  filter(intensity > 0) %>%
  ggplot(aes(x = day, y = significance, color = significance, size = magnitude, title = title)) +
  geom_jitter(alpha = 0.7) +
  scale_color_distiller(palette = "Purples", direction = 1) +
  ggtitle("USGS Earthquakes (Most Significant)")
  

ggplotly(p, width = 900, height = 600, tooltip = c("title", "y"))

# export plot to .jpg with ggsave
ggsave(here("data", "sig_quakes.jpg"))
LS0tDQp0aXRsZTogIlIgRWFydGhxdWFrZXMgLSBVU0dTIFNoYWtlTWFwIERhdGEiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyMjIFdlbGNvbWUgdG8gdGhlIGVhcnRocXVha2UgYW5hbHlzaXMgbm90ZWJvb2suIFRoZSBkYXRhIGlzIGRlcml2ZWQgZnJvbSB0aGUgVVNHUyBsaXZlIGZlZWQgb2YgZWFydGhxdWFrZXMgaW4gdGhlIHBhc3QgMzAgZGF5cyB3aXRoIGEgbWFnbml0dWRlIGdyZWF0ZXIgdGhhbiAyLjUrLiANCg0KIyMjIyAqKkdvYWxzOioqDQoNCiotLSBGaW5kIHNpZ25pZmljYW50IGV2ZW50cyBiYXNlZCBvbiBkZXB0aCwgbWFnbml0dWRlLCBhbmQgaW50ZW5zaXR5LiogPGJyIC8+DQoqLS0gRm9jdXMgb24gdGhlIHRvb2xzIHVzZWQgaW4gZWFydGhxdWFrZSBhbmFseXNpcy4qIDxiciAvPg0KKi0tIERpc3BsYXkgb3V0bHlpbmcgb2JzZXJ2YXRpb25zIGluIGEgZ3JhcGhpY2FsbHkgYXNlc3RldGljIHdheS4qDQoNCiMjIyMgRGF0YSBzb3VyY2VzIC0gaHR0cHM6Ly9lYXJ0aHF1YWtlLnVzZ3MuZ292L2VhcnRocXVha2VzL2ZlZWQvdjEuMC9nZW9qc29uLnBocA0KIyMjIyAgICAgICAgICAgICAgICBodHRwczovL2VhcnRocXVha2UudXNncy5nb3YvZWFydGhxdWFrZXMvZmVlZC92MS4wL2Nzdi5waHANCg0KIyMjIyBEb2N1bWVudGF0aW9uIC0gaHR0cHM6Ly9lYXJ0aHF1YWtlLnVzZ3MuZ292L2RhdGEvY29tY2F0L2luZGV4LnBocA0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0gDQprbml0cjo6b3B0c19jaHVuayRzZXQod2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpDQoNCiMgaW1wb3J0IGxpYnJhcmllcw0KbGlicmFyeShoZXJlKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KFJDb2xvckJyZXdlcikNCmxpYnJhcnkocmdsKQ0KbGlicmFyeShEVCkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShkYXRhLnRhYmxlKQ0KbGlicmFyeShqYW5pdG9yKQ0KbGlicmFyeShnZ2JlZXN3YXJtKQ0KbGlicmFyeShnZW9qc29uaW8pDQpsaWJyYXJ5KHNwKQ0KYGBgDQojIyMjIyAqKlN0ZXAgMSoqIC0gSW1wb3J0IGFuZCB0aGUgR2VvSnNvbiBmaWxlIGFuZCBDU1YsIGFuZCBjb252ZXJ0IHRoZW0gaW50byBhIGRhdGFmcmFtZS4NCmBgYHtyfQ0KIyBjcmVhdGUgYSBzcGF0aWFsIGRhdGFmcmFtZSBvZiB0aGUgZ2VvanNvbiBmaWxlLg0Kc3BkZiA8LSBnZW9qc29uX3JlYWQoaGVyZSgiZGF0YSIsICJzaGFrZW1hcC5nZW9qc29uIiksIHdoYXQ9InNwIikNCmRmIDwtIGFzLmRhdGEuZnJhbWUoc3BkZikNCg0KIyBjcmVhdGUgZGF0YWZyYW1lIGZyb20gdGhlIENTVi4NCmVxX2NzdiA8LSByZWFkX2NzdihoZXJlKCJkYXRhIiwgIjIuNV9tb250aC5jc3YiKSwgc2hvd19jb2xfdHlwZXMgPSBGQUxTRSkNCmBgYA0KIyMjIyMgKipTdGVwIDIqKiAtIFRpbWUgZm9yIGRhdGEgd3JhbmdsaW5nLiBGaXJzdCBvZmYgd2UgbmVlZCB0byBwYXJzZSBvdXQgdGhlIHllYXIsIG1vbnRoLCBhbmQgZGF5IGZyb20gdGhlIGRhdGV0aW1lIHN0cmluZyBpbiB0aGUgJ3RpbWUnIGNvbHVtbiB0byBnZXQgYSBzaW1wbGVyIGxvb2sgYXQgdGhlIGRhdGEuIFdlIGFsc28gd2FudCB0byBjcmVhdGUgb25lIG1vcmUgY29sdW1ucyBhIG5hbWVkICdtYWdBbGwnIHRoYXQgd2lsbCBzaG93IHVzIHdoZXJlIG1hZ25pdHVkZXMgYXJlIGdyZWF0ZXIgdGhhbiBhdmVyYWdlIG92ZXIgdGhlIGxhc3QgbW9udGguDQpgYGB7cn0NCiMgcGFyc2Ugb3V0IHRpbWUgY29sdW1ucywgY3JlYXRlICdtYWdBbGwnLCBhbmQgZHJvcCB1bmVjY2Vzc2FyeSB2YXJpYWJsZXMuDQplcV9uZXcgPC0gZXFfY3N2ICU+JQ0KICBzZXBhcmF0ZSh0aW1lLCBjKCJ5ZWFyIiwgIm1vbnRoIiwgImRheSIpLCByZW1vdmUgPSBGQUxTRSkgJT4lDQogIG11dGF0ZShtYWdBbGwgPSBtYWcgPiBtZWFuKG1hZywgbmEucm0gPSBUUlVFKSkgJT4lDQogIHNlbGVjdChpZCwgeWVhciwgbW9udGgsIGRheSwgZGVwdGgsIG1hZ0FsbCwgZGVwdGhFcnJvcikNCmBgYA0KIyMjIyMgKipTdGVwIDMqKiAtIEpvaW4gdGhlIHRhYmxlcyB0b2dldGhlciBiYXNlZCBvbiAnaWQnIHRvIGdldCB0aGUgYXR0cmlidXRlcyBkZXNpcmVkIGZvciB0aGUgYW5hbHlzaXMuDQpgYGB7cn0NCiMgc2VsZWN0LCBkZXNpcmVkIGNvbHVtbnMsIHJlbmFtZSBjZXJ0YWluIHZhcmlhYmxlcywgYW5kIHNvcnQgYnkgbWFnbml0dWRlLg0KZXFfZGYgPC0gbGVmdF9qb2luKGVxX25ldywgZGYsIGJ5PSdpZCcpICU+JQ0KICBzZWxlY3QoeWVhciwgbW9udGgsIGRheSwgZGVwdGgsIGRlcHRoRXJyb3IsIG1hZ0FsbCwgbWFnLCBtYWdUeXBlLCBwbGFjZSwgZmVsdCwgY2RpLCBtbWksIHNpZywgbmV0LCB0aXRsZSkgJT4lDQogIHJlbmFtZShpbnRlbnNpdHkgPSBtbWksIGludGVuc2l0eU1heCA9IGNkaSwgbWFnbml0dWRlID0gbWFnLCBzaWduaWZpY2FuY2UgPSBzaWcpICU+JQ0KICBhcnJhbmdlKC1tYWduaXR1ZGUpDQoNCnNlbGVjdF9hbGwoZXFfZGYpDQpgYGANCiMjIyMjICoqU3RlcCA0KiogLSBMZXRzIGRpc3BsYXkgYSBjaGFydCB0aGF0IHJlcHJlc2VudHMgZGVwdGggdnMgbWFnbml0dWRlLCBhbmQgY29tcGFyZXMgdGhlIGludGVuc2l0eSBmZWx0IGJ5IGNpdGl6ZW5zIHJlcG9ydGluZyBvYnNlcnZhdGlvbnMuIFdlIHdvdWxkIGV4cGVjdCB0byBzZWUgYSBoaWdoZXIgaW50ZW5zaXR5IHZhbHVlcyB3aXRoIGluY3JlYXNpbmcgbWFnbml0dWRlIGF0IHNoYWxsb3dlciBkZXB0aHMuICANCmBgYHtyfQ0KcCA8LSBlcV9kZiAlPiUNCiAgZmlsdGVyKGludGVuc2l0eSA+IDApICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBkZXB0aCwgeSA9IG1hZ25pdHVkZSwgY29sb3IgPSBpbnRlbnNpdHksIHNpemUgPSBtYWduaXR1ZGUpKSArDQogIGdlb21faml0dGVyKGFscGhhID0gMC43KSArDQogIHNjYWxlX2NvbG9yX2Rpc3RpbGxlcihwYWxldHRlID0gIlNwZWN0cmFsIiwgZGlyZWN0aW9uID0gLTEpICsNCiAgZ2d0aXRsZSgiVVNHUyBFYXJ0aHF1YWtlcyAoTWFnbml0dWRlIFZTIERlcHRoKSIpDQogIA0KDQpnZ3Bsb3RseShwLCB3aWR0aCA9IDkwMCwgaGVpZ2h0ID0gNjAwLCB0b29sdGlwID0gYygieCIsICJ5IiwgImNvbG9yIikpDQpgYGANCiMjIyMjICoqU3RlcCA1KiogLSBNYWduaXR1ZGUgdHlwZXMgYXJlIHRoZSBtZXRob2Qgb3IgYWxnb3JpdGhtIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBwcmVmZXJyZWQgbWFnbml0dWRlIGZvciBhbiBldmVudC4gQSB0YWJsZSBkZXNjcmliaW5nIHRoZSBtYWduaXR1ZGUgdHlwZXMgY2FuIGJlIGZvdW5kIGhlcmUgaHR0cHM6Ly93d3cudXNncy5nb3YvcHJvZ3JhbXMvZWFydGhxdWFrZS1oYXphcmRzL21hZ25pdHVkZS10eXBlcy4gU2luY2UgdGhlIGRpZmZlcmVudCBtZXRob2RzIGFyZSB1c2VkIGZvciB2YXJpYXRpb25zIGluIGVhcnRocXVha2VzLiBMZXRzIHNwbGl0IHRoZSBhbmFseXNpcyBpbnRvIGluZGl2aWR1YWwgdGFibGVzIGJhc2VkIG9uIHRoZSBhbGdvcml0aG1zIGFuZCBzZWUgd2hpY2ggb25lcyBhcmUgcHJlZmZlcmVkIGJhc2VkIG9uIGRlcHRoIGFuZCBtYWduaXR1ZGUuDQpgYGB7cn0NCiMgZmFjZXQgd3JhcCAtLS0tLS0tLS0tLQ0KcCA8LSBlcV9kZiAlPiUNCiAgZmlsdGVyKCFpcy5uYShtYWdUeXBlKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IGRlcHRoLCB5ID0gbWFnbml0dWRlLCBjb2xvciA9IG1hZ25pdHVkZSkpICsNCiAgZ2VvbV9qaXR0ZXIoYWxwaGEgPSAwLjcpICsNCiAgc2NhbGVfY29sb3JfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmVkcyIsIGRpcmVjdGlvbiA9IDEpICsNCiAgZmFjZXRfd3JhcCh+IG1hZ1R5cGUpICsNCiAgZ2d0aXRsZSgiVVNHUyBFYXJ0aHF1YWtlcyAoTWFnbml0dWRlIFR5cGUpIikNCg0KZ2dwbG90bHkocCwgd2lkdGggPSA5MDAsIGhlaWdodCA9IDYwMCwgdG9vbHRpcCA9IGMoIngiLCAieSIpKQ0KYGBgDQojIyMjIyAqKlN0ZXAgNioqIC0gTGV0cyB0YWtlIGEgbG9vayBhbmQgdHJ5IHRvIGZpbmQgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZWFydGhxdWFrZSB0aGF0IHJlY2lldmVkIHRoZSBtb3N0IGF0dGVudGlvbiBieSBwZW9wbGUgYW5kIHNlbnNvcnMgaW4gdGhlIGxhc3QgMzAgZGF5cy4gVGhlbiBleHBvcnQgdGhlIHBsb3QgYXMgYSAuanBnIGZpbGUuDQpgYGB7cn0NCnAgPC0gZXFfZGYgJT4lDQogIGZpbHRlcihpbnRlbnNpdHkgPiAwKSAlPiUNCiAgZ2dwbG90KGFlcyh4ID0gZGF5LCB5ID0gc2lnbmlmaWNhbmNlLCBjb2xvciA9IHNpZ25pZmljYW5jZSwgc2l6ZSA9IG1hZ25pdHVkZSwgdGl0bGUgPSB0aXRsZSkpICsNCiAgZ2VvbV9qaXR0ZXIoYWxwaGEgPSAwLjcpICsNCiAgc2NhbGVfY29sb3JfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUHVycGxlcyIsIGRpcmVjdGlvbiA9IDEpICsNCiAgZ2d0aXRsZSgiVVNHUyBFYXJ0aHF1YWtlcyAoTW9zdCBTaWduaWZpY2FudCkiKQ0KICANCg0KZ2dwbG90bHkocCwgd2lkdGggPSA5MDAsIGhlaWdodCA9IDYwMCwgdG9vbHRpcCA9IGMoInRpdGxlIiwgInkiKSkNCg0KIyBleHBvcnQgcGxvdCB0byAuanBnIHdpdGggZ2dzYXZlDQpnZ3NhdmUoaGVyZSgiZGF0YSIsICJzaWdfcXVha2VzLmpwZyIpKQ0KYGBg